<?php 

/**
 * [用户个人信息资料模型]
 */

class BaseinfoModel extends Model{

	// 指定需要操作的表名
	public $table = 'baseinfo';

	// 自动验证
	public $validate = array(
		array('realname','nonull','真实姓名不能为空',2,3),
		array('realname','minlen:2','真实姓名长度不正确',2,3),
		array('realname','maxlen:10','真实姓名长度不正确',2,3),
		array('sex','num:1,2','性别选择错误',2,3),
		array('birthday','regexp:/^\d{4}-\d{2}-\d{2}$/','生日格式错误',3,3),
		array('peopleaddress','nonull','通讯地址不能为空',2,3),
		array('peopleaddress','maxlen:155','通讯地址长度不得超出155个字符',2,3),
		array('peoplenumber','tel','请填写正确的电话号码',3,3),
		array('qq','regexp:/^[1-9]\d{4,10}$/','请填写正确的QQ号码',3,3),
		array('msn','email','msn格式不正确',3,3),
		array('peopleintro','maxlen:300','个人简介长度不得超出300个字符',3,3)
		);

	// 自动完成
	public $auto = array(
		array('user_uid','_uid','method',2,1)
		);
	// 返出用户的uid，用户在登陆或者注册时，已经保存到session中
	public function _uid(){
		return session('uid');
	}

	/**
	 * [添加用户资料，客户首次设置个人资料]
	 */
	public function add_data(){
		$this->add();
	}


	/**
	 * [判断用户是否有个人资料, 如何判断呢?]
	 * 就是根据用户uid，看对应的用户资料表hd_job_baseinfo中，是否有主键bid
	 * 有的话，就表示该用户有对应的个人资料，因为两个表是关联的，资料表记录用户表的字段
	 * 定义$field，是为了方便后面其他方法进行某个字段的查询，可以传入想查询的字段名
	 */
	public function have_info(){
		return $this->where(array('user_uid'=>session('uid')))->getField('bid');
	}

	/**
	 * [获得用户资料]
	 */
	// public function get_data($field = NULL){
	// 	return $this->field($field)->where(array('user_uid'=>session('uid')))->find();
	// }
	/**
	 * [获得用户个人资料]
	 */
	public function get_info($field = NULL){
		// 如果字段field为空，就按照where条件正常查询
		if(is_null($field)){
			return $this->field($field)->where(array('user_uid'=>session('uid')))->find();
		}

		// 指定字段
		$facePath = $this->field($field)->where(array('user_uid'=>session('uid')))->find();
		// 如果用户没上传图像，或者没有个人资料，就显示默认图片，组合默认图片的路径
		if(!$facePath || !$facePath['face']){
			return array(
				'face'	=>	__TPL__ . '/Public/Images/no_photo.gif'
				);
		}
		// 组合用户上传图像的路径
		$facePath['face'] = __ROOT__ . '/' . $facePath['face'];
		// 返出新头像路径
		return $facePath;
	}


	/**
	 * [更新个人资料]
	 */
	public function update_data(){
		$this->where(array('user_uid'=>session('uid')))->save();
	}


	/**
	 * [修改个人头像]
	 */
	public function update_face(){
		// 实例化上传对象
		$upload = new Upload();
		$fileInfo = $upload->upload();
		// p($fileInfo);
		// 打印$fileInfo , 得到上传图片的所有信息
		// 		Array
		// (
		//     [0] => Array
		//         (
		//             [path] => Upload/picinfo/140618/60071403066571.jpg
		//             [thumb] => Upload/picinfo/140618/60071403066571_thumb.jpg
		//             [fieldname] => upload
		//             [image] => 1
		//             [uptime] => 1403066571
		//             [basename] => 60071403066571.jpg
		//             [filename] => 60071403066571
		//             [name] => Chrysanthemum
		//             [size] => 879394
		//             [ext] => jpg
		//             [dir] => Upload/picinfo/140618/
		//         )
		// )
		
		// 判断用户上传文件类型，是否符合要求, 因为Upload类中有$error属性，所以可以把错误压入到$this->error中去
		if(!$fileInfo){
			$this->error = $upload->error;
			return false;
		}

		// 在用户修改新头像之前，先获得原来上传的头像缩略图地址，
		// 打印出来，得到Upload/picinfo/140618/75791403068326_thumb.jpg
		$thumpPath = $this->where(array('user_uid'=>session('uid')))->getField('face');

		// 修改头像地址，保存到数据库的face字段中
		$this->where(array('user_uid'=>session('uid')))->save(array('face'=>$fileInfo[0]['thumb']));

		// 获得原来上传的头像缩略图完整物理地址
		// 打印后，得到E:/wamp/www/yc_6022_job/Upload/picinfo/140618/81101403068348_thumb.jpg
		$thumbFullPath = ROOT_PATH . $thumpPath;

		// 判断缩略图是否存在
		if(is_file($thumbFullPath)){
			// 删除原来上传的缩略图
			unlink($thumbFullPath);
			// 根据原图跟缩略图文件名，只是差了后缀_thumb, 组合原来上传的原图地址
			$path = str_replace(C('THUMB_ENDFIX') . '.', '.', $thumbFullPath);
			// 删除原图
			is_file($path) && unlink($path);
		}

		// 最终返回真，否则会一直报错
		return true;
	}






}
 ?>